home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / apg_2.exe / PHONE2.S&M < prev    next >
Text File  |  1993-03-18  |  5KB  |  242 lines

  1. ''''''''''''''''''''''''''''''''''''''''''''''''''
  2. '                                                '
  3. '                  Birthday List                 '
  4. '                                                '
  5. '                 CREATED BY APG                 '
  6. '                 S & M SOFTWARE                 '
  7. '                 COPYRIGHT 1993                 '
  8. '                                                '
  9. '         USE files are PHONE.USE and .US1       '
  10. '                                                '
  11. '  Author: S&M Software                          '
  12. '  Date:   03-18-1993                            '
  13. '  Time:   10:49:41                              '
  14. '                                                '
  15. '  USE file Created         USE file Modified    '
  16. '  Date:   03-10-1993       Date:   03-14-1993   '
  17. '  Time:   22:50:08         Time:   11:18:01     '
  18. ''''''''''''''''''''''''''''''''''''''''''''''''''
  19.  
  20. DEFINT A-Z
  21. DECLARE SUB box ()
  22. DECLARE SUB header ()
  23. DECLARE SUB sortindex ()
  24. DECLARE SUB total ()
  25. TYPE rectype                                'Define variables for file
  26.    pnbr AS STRING * 12
  27.    xName20 AS STRING * 30
  28.    xAddress AS STRING * 25
  29.    xcity40 AS STRING * 20
  30.    xstate50 AS STRING * 2 
  31.    xZip60 AS STRING * 10
  32.    xSpouse AS STRING * 10
  33.    xData80 AS STRING * 8 
  34.    xGift90 AS INTEGER
  35.    sts AS STRING * 1
  36. END TYPE
  37. TYPE indextype                              'Define index
  38.    recnum AS INTEGER
  39.    sort AS STRING * 8
  40. END TYPE
  41. DIM SHARED pline
  42. DIM SHARED page
  43. DIM SHARED numofrec
  44. DIM SHARED f3.0$
  45. DIM SHARED f5.0$
  46. DIM SHARED phone AS rectype
  47. f3.0$ = "####"
  48. f5.0$ = "######"
  49. DIM SHARED TxGift90#
  50.  
  51. ON ERROR GOTO errhandle
  52.  
  53. OPEN "PHONE.DAT" FOR RANDOM AS #1 LEN = LEN(phone)
  54.  
  55. numofrec = LOF(1) \ LEN(phone)
  56. IF numofrec = 0 THEN
  57.    CLS
  58.    PRINT "You have to build the Data Base first."
  59.    INPUT "", a$
  60.    GOTO fina
  61. END IF
  62. DIM SHARED index(1 TO numofrec)  AS indextype
  63. FOR i = 1 TO numofrec
  64.    GET #1, i, phone
  65.    index(i).recnum = i
  66.    index(i).sort = UCASE$(phone.xData80)
  67. NEXT i
  68.  
  69. COLOR , 1
  70. CLS
  71. COLOR 4, 1
  72. LOCATE 1, 25
  73. PRINT STRING$(30, 220)
  74. LOCATE 2, 24
  75. COLOR , 0
  76. PRINT " ";
  77. COLOR 0, 3
  78. PRINT STRING$(30, " ")
  79. LOCATE 2, 33
  80. COLOR 0, 3: PRINT "Birthday List"
  81. LOCATE 3, 24
  82. COLOR , 0: PRINT STRING$(30, " ")
  83.  
  84. COLOR 7, 1
  85. LOCATE 5, 26
  86. PRINT "Date: "; DATE$; "    "; TIME$
  87. LOCATE 6, 26
  88. PRINT "Program name:       "; "PHONE2  "
  89. LOCATE 7, 26
  90. PRINT "Data file name:     "; "PHONE.DAT"
  91. LOCATE 8, 26
  92. PRINT "Number of records: "; numofrec
  93.  
  94. box
  95. COLOR 0, 3
  96. LOCATE 11, 26
  97. PRINT "Please check to see that the"
  98. LOCATE 12, 26
  99. PRINT "printer has paper and is "
  100. LOCATE 13, 26
  101. PRINT "on-line.  A)bort, or <ENTER>"
  102.  
  103. DO
  104. a$ = INKEY$
  105. LOOP WHILE a$ = ""
  106. IF UCASE$(a$) = "A" GOTO fina
  107.  
  108. box
  109. LOCATE 12, 27
  110. PRINT "Sorting file - Please wait"
  111. sortindex
  112. box
  113.  
  114. first$ = "F"
  115. FOR i = 1 TO numofrec
  116. IF pline <= 0 THEN
  117.    IF first$ = "" THEN LPRINT CHR$(12)
  118.    header
  119. END IF
  120. GET #1, index(i).recnum, phone
  121. IF phone.sts = "D" THEN GOTO nex
  122. LPRINT TAB(1); phone.xName20;
  123. LPRINT TAB(33); phone.xcity40;
  124. LPRINT TAB(55); phone.xstate50;
  125. LPRINT TAB(59); phone.xData80;
  126. LPRINT USING f3.0$; TAB(69); phone.xGift90
  127.  
  128. a$ = INKEY$
  129. IF a$ = CHR$(27) THEN GOTO fin
  130.  
  131. first$ = ""
  132. pline = pline - 1
  133. TxGift90# = TxGift90# + phone.xGift90 
  134. nex:
  135. NEXT i
  136. total
  137. fin:
  138.  
  139. LPRINT CHR$(12);                                'Form Feed
  140. fina:
  141. COLOR 7, 1
  142. CLS
  143. CLOSE
  144. END
  145.  
  146. errhandle:
  147. IF ERR = 25 THEN
  148.    box
  149.    LOCATE 12, 32
  150.    PRINT "Printer Not ready"
  151.    LOCATE 13, 32
  152.    PRINT "Abort or Retry "
  153.    DO
  154.       a$ = INKEY$
  155.    LOOP WHILE a$ = ""
  156.    IF UCASE$(a$) = "R" THEN
  157.       box
  158.       LOCATE 12, 32
  159.       PRINT "Printing Page:"; page
  160.       LOCATE 13, 32
  161.       PRINT "<Escape> to cancel"
  162.       RESUME
  163.    ELSE
  164.       GOTO fina
  165.    END IF
  166. ELSE
  167.    CLS
  168.    PRINT "Unexpected error number"; ERR
  169.    PRINT "Please consult your Quickbasic Manual"
  170.    INPUT "", a$
  171.    GOTO fina
  172. END IF
  173.  
  174. SUB box
  175. COLOR 4, 1
  176. LOCATE 10, 25
  177. PRINT STRING$(30, 220)
  178. COLOR 9, 7
  179. LOCATE 11, 24
  180. COLOR 0: PRINT CHR$(219); : COLOR , 3: PRINT STRING$(30, " ")'219)
  181. LOCATE 12, 24
  182. COLOR 0: PRINT CHR$(219); : COLOR , 3: PRINT STRING$(30, " ")'219)
  183. LOCATE 13, 24
  184. COLOR 0: PRINT CHR$(219); : COLOR , 3: PRINT STRING$(30, " ")'219)
  185. LOCATE 14, 24
  186. COLOR 0: PRINT STRING$(30, 219)
  187. END SUB
  188.  
  189. SUB header
  190. first$ = ""
  191. page = page + 1
  192. LOCATE 12, 32
  193. PRINT "Printing Page:"; page
  194. LOCATE 13, 31
  195. PRINT "<Escape> to cancel"
  196. IF first$ = "" THEN
  197.    first$ = "F"
  198. END IF
  199.  
  200. LPRINT TAB(2); "Run date: "; DATE$; " "; TIME$;
  201. LPRINT TAB(70); "Page:"; page
  202. LPRINT TAB(2); "Program name: PHONE2";
  203. LPRINT TAB(34); "Birthday List"
  204. LPRINT ""
  205.  
  206. LPRINT TAB(1); "Name";
  207. LPRINT TAB(33); "City";
  208. LPRINT TAB(55); "St";
  209. LPRINT TAB(59); "Birthday";
  210. LPRINT TAB(69); "Gift"
  211.  
  212. LPRINT TAB(69); "Amount"
  213. LPRINT STRING$(80, "=")
  214. pline = 51
  215. END SUB
  216.  
  217. SUB sortindex STATIC
  218. SHARED index() AS indextype, numofrec
  219. offset = numofrec \ 2
  220. DO WHILE offset > 0
  221.    limit = numofrec - offset
  222.    DO
  223.       switch = FALSE
  224.       FOR i = 1 TO limit
  225.          IF UCASE$(index(i).sort) > UCASE$(index(i + offset).sort) THEN
  226.             SWAP index(i), index(i + offset)
  227.             switch = i
  228.          END IF
  229.       NEXT i
  230.       limit = switch
  231.    LOOP WHILE switch
  232.    offset = offset \ 2
  233. LOOP
  234.  
  235. END SUB
  236.  
  237. DEFINT A-Z
  238. SUB total
  239. LPRINT TAB(67); STRING$(7, 205)
  240. LPRINT TAB(67); USING f5.0$; TxGift90#
  241. END SUB
  242.